package com.mobile.view.util;

import org.apache.commons.lang3.StringUtils;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileUtil {

    public static Boolean judgeFileIsVideo(String filePath) {
        String name = StringUtils.substringAfterLast(filePath, ".");
        if ("mp4".equalsIgnoreCase(name) || "avi".equalsIgnoreCase(name) || "wmv".equalsIgnoreCase(name) ||
                "rmvb".equalsIgnoreCase(name) || "flv".equalsIgnoreCase(name) || "mkv".equalsIgnoreCase(name)) {
            return true;
        }
        return false;
    }

    public static Boolean judgeFileIsImage(String filePath) {
        String name = StringUtils.substringAfterLast(filePath, ".");
        if ("jpg".equalsIgnoreCase(name) || "png".equalsIgnoreCase(name) || "bmp".equalsIgnoreCase(name) || "gif".equalsIgnoreCase(name)) {
            return true;
        }
        return false;
    }

  /* BMP
                        BMP（Window标准位图）是最普遍的点阵图格式之一，也是Window系统下的标准格式，是将Window下显示的点阵图以无损形式保存的文件，其优点是不会降低图片的质量，但文件大小比较大。
                        JPG/JPEG
    （联合图形专家组图片格式）最适合于使用真彩色或平滑过渡式的照片和图片。该格式使用有损压缩来减少图片的大小，因此用户将看到随着文件的减小，图片的质量也降低了，当图片转换成.jpg文件时，图片中的透明区域将转化为纯色。
                        PNG
    （可移植的网络图形格式）适合于任何类型，任何颜色深度的图片。也可以用PNG来保存带调色板的图片。该格式使用无损压缩来减少图片的大小，同时保留图片中的透明区域，所以文件也略大。尽管该格式适用于所有的图片，但有的Web浏览器并不支持它。
                        GIF*/
    //                    wmv、asf、asx
    //                Real Player ：rm、 rmvb
    //                MPEG视频 ：mp4
    //                手机视频 ：3gp
    //                Apple视频 ：mov、m4v
    //                其他常见视频：avi、dat、mkv、flv、vob


    /**
     * 判断两个文件的内容是否相同，文件名要用绝对路径
     *
     * @param fileName1 ：文件1的绝对路径
     * @param fileName2 ：文件2的绝对路径
     * @return 相同返回true，不相同返回false
     */
    public static boolean isSameFile(String fileName1, String fileName2) {
        FileInputStream fis1 = null;
        FileInputStream fis2 = null;
        try {
            fis1 = new FileInputStream(fileName1);
            fis2 = new FileInputStream(fileName2);

            //返回总的字节数
            int len1 = fis1.available();
            int len2 = fis2.available();

            //长度相同，则比较具体内容
            if (len1 == len2) {
                //建立两个字节缓冲区
                byte[] data1 = new byte[len1];
                byte[] data2 = new byte[len2];

                //分别将两个文件的内容读入缓冲区
                fis1.read(data1);
                fis2.read(data2);

                //依次比较文件中的每一个字节
                for (int i = 0; i < len1; i++) {
                    //只要有一个字节不同，两个文件就不一样
                    if (data1[i] != data2[i]) {
                        return false;
                    }
                }
                return true;
            } else {
                //长度不一样，文件肯定不同
                return false;
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {//关闭文件流，防止内存泄漏
            if (fis1 != null) {
                try {
                    fis1.close();
                } catch (IOException e) {
                    //忽略
                    e.printStackTrace();
                }
            }
            if (fis2 != null) {
                try {
                    fis2.close();
                } catch (IOException e) {
                    //忽略
                    e.printStackTrace();
                }
            }
        }
        return false;
    }

}
